//////////////////////////////////////////////////////////////////////////
//																		//
//	Author:			Michael Mozdzierz									//
//	Date: 			01/16/2015											//
//	Description:	Define graphics resource base type					//
//																		//
//////////////////////////////////////////////////////////////////////////
#pragma once
#include <D3D11.h>
// A base interface for all graphics resources
struct IGraphicsResource
{
	virtual ~IGraphicsResource(void) {}

	// copies data in video memory to CPU memory
	virtual void getData(void* data, unsigned int pixelStride) = 0;
	// copies resource data in CPU memory to video memory
	virtual void setData(void* data, unsigned int pixelStride) = 0;

	// gets the d3d11 object that represents the resource
	virtual ID3D11Resource* getResource(void) const = 0;
	// gets shader resource view for this resource
	virtual ID3D11ShaderResourceView* getSrv(void) const = 0;

	// gets the d3d11 descriptor for this object and copies it onto 'desc'
	virtual void getDesc(void* desc) = 0;
};